package com.pet.platform.mapper;

import com.pet.platform.dto.AppointmentQueryDTO;
import com.pet.platform.entity.Appointment;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDateTime;
import java.util.List;

@Mapper
public interface AppointmentMapper {
    
    /**
     * 根据ID查询预约
     */
    Appointment findById(@Param("id") Long id);
    
    /**
     * 分页查询预约
     */
    List<Appointment> findPage(@Param("queryDTO") AppointmentQueryDTO queryDTO, @Param("offset") int offset, @Param("limit") int limit);
    
    /**
     * 查询预约数量
     */
    long count(@Param("queryDTO") AppointmentQueryDTO queryDTO);
    
    /**
     * 新增预约
     */
    void insert(Appointment appointment);
    
    /**
     * 更新预约
     */
    void update(Appointment appointment);
    
    /**
     * 删除预约
     */
    void delete(@Param("id") Long id);
    
    /**
     * 更新预约状态
     */
    void updateStatus(@Param("id") Long id, @Param("status") String status, @Param("updatedTime") LocalDateTime updatedTime);
    
    /**
     * 查询时间范围内的预约数量
     */
    int countByTimeRange(@Param("serviceId") Long serviceId, @Param("startTime") LocalDateTime startTime, @Param("endTime") LocalDateTime endTime);
} 